查看原文
其他

开源!我知道你不知道,百度开源词法LAC 2.0帮你更懂中文

百度AI 2021-09-10



百度 NLP 权威发布,可能是最好用的中文词法分析工具——LAC 2.0闪亮登场!与 LAC 1.0相比,LAC 2.0在性能与效果上有明显提升,且支持多种开发语言,一键安装调用,更加快速便捷。


  • LAC 项目地址

    https://github.com/baidu/lac



 LAC 是什么 


LAC 全称 Lexical Analysis of Chinese,是百度 NLP(自然语言处理部)研发的一款词法分析工具,可实现中文分词、词性标注、专名识别等功能。


LAC 在分词、词性、专名识别的整体准确率超过90%,以专名识别为例,其效果要比同类词法分析工具提升10%以上。


例如:我知道你不知道,百度开源词法 LAC 帮你更懂中文!



LAC 2.0可以从语义合理性角度精确完成分词、词性标注和专名的一体化识别。

 


 LAC 2.0有哪些优势 


自开源以来,LAC 得到了不少关注与好评。为了进一步提升厂内外开发者的使用体验,我们对 LAC 进行了新一轮全面升级,带来5大优势:

 

效果好:通过大规模语料自动标注和联合模型训练,整体效果业内领先。


通过前沿的深度学习模型 BiGRU-CRF,LAC 2.0可以联合学习分词、词性标注实体识别这三个具有强关联性的任务,模型的整体效果 F1 值超过了0.91,词性标注 F1 值超过了0.94,专名识别 F1 值超过了0.85,效果对比业内其他开源工具达到了领先的水平。


同时,对于词法分析而言,OOV(新词,out of vocabulary)是当前模型效果提升最大的障碍,最有效的解决方法是增加数据量,但是人工标注数据需要巨大的人力成本。我们基于强大的 NLP 技术积累,通过自动标注生成大规模数据集,让模型可以学习到强大的泛化特征,并通过一定量的人工标注数据对模型进行修正。相较于仅用人工标注数据集进行模型训练,通过该方法训练得到的模型整体效果提升超过3%。

 

效率高:优化模型参数与性能,重构 C++ 调用代码,简化编译流程,性能提升约2倍。


与旧版本相比,LAC 2.0的效率得到较大的提升。通过精简模型参数,结合飞桨预测库的性能优化,LAC 2.0词法分析的 CPU 单线程性能优于其他主流工具(详细数据参考表4词性标注与实体识别性能评估)。

 

可定制:LAC 2.0可以实现简单可控的干预机制,能够精准匹配用户词典对模型进行干预,词典支持长片段形式,使得干预更为精准。

 

模型示意图

 

调用便捷:增加 Python 的 pip 一键安装,增加 Java 和 Android 的支持与调用。


LAC 1.0仅支持 C++ 和 Python,调用相对复杂有一定门槛。LAC 2.0则同时提供了 Java、android、C++ Python 语言,重构相关代码,相比 LAC 1.0版本使用更便捷。同时,LAC 2.0支持一键安装,开发者可以实现快速调用和集成。

 

支持移动端:定制超轻量级模型,体积仅为 2M。


LAC 2.0在对 Android 应用的支持上,定制了一版超轻量级的模型,该模型的体积仅为 2M在主流千元手机上测试单线程性能达到了200 QPS,能够满足大多数移动应用的需求,效果大幅超过了同等体积量级的模型。

 


 LAC 2.0对比其他开源工具 

 

分词效果


我们选择市面上流行的3款分词工具进行模型比较。并在 pku、msr、ctb、weibo 等多个开源数据集对模型效果进行评测,从结果上看,LAC 在不同数据集的分词效果均明显优于相关工具,平均分词错误至少降低38.5%,如下所示:


该表格列出的数据是通过各个工具提供的训练接口在不同开源数据集上进行微调训练得出。采用数据集微调训练后再评估,是因为目前分词结果并没有统一的标准,比如人名“张三”,MSR 数据集切分时会将其作为一个完整的单词,而工具 A 数据集标准则认为姓和名需要进行切分,故而会切分为“张  三”。不同标准导致结果差异大,故而通过微调训练使得模型在一个分词标准下进行比较。


LAC 默认模型的分词标准偏向于实体粒度,会比其他开源工具的分词粒度更大一些,有需要的同学,可通过增量训练接口定制接口快速实现模型微调和粒度迁移。

 

专名识别效果


标注任务中,我们以词法任务中难度最大的专名识别任务对 LAC 的效果进行评估,在开源的新闻实体识别数据集(MSRA)与简历实体识别数据集(Resume)上比较了 LAC 2.0与其他工具的效果差异:

▲ 表1 MSRA 专名效果评估

 

▲ 表2 Resume 专名效果评估


表1、表2中 LAC 的人名识别效果显示会稍低于工具 B,实则是因为 LAC 认为“张先生”、“李老师”才是一个完整的人名实体,而其他工具和 MSRA 数据集则将其中“张”字、“李”字标注为人名实体。故而 LAC 的人名识别效果实际上会显著高于表中的数值,并优于工具 B。


综上可知,LAC 的专名识别的整体效果要显著优于其他工具。

 

性能比较


我们也对 LAC 与其他工具的性能进行比较,测试环境为:Python 语言,Linux 系统,CPU E5-2650 v3。


其分词的性能如表3所示,词性标注与实体识别性能如表4所示,LAC 还可实现批处理的形式,性能会更快一些。


从结果上看,在分词速率上,LAC 性能优于工具 A 和工具 B。而在词性标注和实体识别上,LAC 的性能是最高的。


▲ 表3 分词性能评估


▲ 表4 词性标注与实体识别性能评估

 

 LAC 2.0如何安装使用 


LAC 2.0安装非常简单,Python 语言的开发者可直接使用 pip 安装,兼容 Python2/3,兼容 Windows、Linux MacOS,其他语言(JAVA、C++、Android)的调用可以参考 GitHub 的 README 文档中安装与使用部分。


pip install lac

from LAC import LAC

lac = LAC()

lac.run("百度是一家高科技公司")

 

感谢大家的关注,点击“阅读原文”或打开下方链接,可了解更多技术详情!


  • LAC 项目地址

    https://github.com/baidu/lac


百度自然语言处理(Natural Language Processing,NLP)以『理解语言,拥有智能,改变世界』为使命,研发自然语言处理核心技术,打造领先的技术平台和创新产品,服务全球用户,让复杂的世界更简单。





: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存